import axios from 'axios'
//定义一个变量,记录公共的前缀  ,  baseURL
const baseURL = '/api';
const instance = axios.create({ baseURL })
import {userTokenStore} from "../../store/token";
import router from "@/router";
import toast from "@/utils/toast";
// 请求拦截器
instance.interceptors.request.use(
    config => {
        // 获取并设置token
        const tokenStore = userTokenStore();
        if (tokenStore.token) {
            config.headers.Authorization = tokenStore.token
        }
        return config
    },
    error => {
        Promise.reject(error)
    }
)

// 响应拦截器
instance.interceptors.response.use(
    result => {
        // 判断业务状态码
        return result.data
    },
    error => {
        if (error.response) {
            // 有响应但状态码不是2xx
            switch (error.response.status) {
                case 401:
                    toast.error('请先登录')
                    userTokenStore().setToken("");
                    router.push('/user/auth')
                    window.location.reload();
                    break
                case 403:
                    toast.error('没有操作权限')
                    break
                case 404:
                    toast.error('请求的资源不存在')
                    break
                case 500:
                    toast.error('服务器内部错误')
                    break
                default:
                    toast.error('服务异常')
            }
        } else if (error.request) {
            // 发出了请求但没有收到响应
            toast.error('网络异常，请检查网络连接')
        } else {
            // 请求配置出错
            toast.error('请求配置错误')
        }
        return Promise.reject(error)
    }
)

export default instance